package com.ruoyi.play.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.ruoyi.play.mapper.WhereToGoModuleMapper;
import com.ruoyi.play.domain.WhereToGoModule;
import com.ruoyi.play.service.IWhereToGoModuleService;
import com.ruoyi.play.service.IWhereToGoOptionService;

/**
 * 去哪模块Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-12-19
 */
@Service
public class WhereToGoModuleServiceImpl implements IWhereToGoModuleService 
{
    @Autowired
    private WhereToGoModuleMapper whereToGoModuleMapper;

    @Autowired
    private IWhereToGoOptionService whereToGoOptionService;

    /**
     * 查询去哪模块
     * 
     * @param id 去哪模块主键
     * @return 去哪模块
     */
    @Override
    public WhereToGoModule selectWhereToGoModuleById(Long id)
    {
        return whereToGoModuleMapper.selectWhereToGoModuleById(id);
    }

    /**
     * 查询去哪模块列表
     * 
     * @param whereToGoModule 去哪模块
     * @return 去哪模块
     */
    @Override
    public List<WhereToGoModule> selectWhereToGoModuleList(WhereToGoModule whereToGoModule)
    {
        return whereToGoModuleMapper.selectWhereToGoModuleList(whereToGoModule);
    }

    /**
     * 查询去哪模块列表（包含选项）
     * 
     * @param whereToGoModule 去哪模块
     * @return 去哪模块
     */
    @Override
    public List<WhereToGoModule> selectWhereToGoModuleListWithOptions(WhereToGoModule whereToGoModule)
    {
        return whereToGoModuleMapper.selectWhereToGoModuleListWithOptions(whereToGoModule);
    }

    /**
     * 新增去哪模块
     * 
     * @param whereToGoModule 去哪模块
     * @return 结果
     */
    @Override
    public int insertWhereToGoModule(WhereToGoModule whereToGoModule)
    {
        return whereToGoModuleMapper.insertWhereToGoModule(whereToGoModule);
    }

    /**
     * 修改去哪模块
     * 
     * @param whereToGoModule 去哪模块
     * @return 结果
     */
    @Override
    public int updateWhereToGoModule(WhereToGoModule whereToGoModule)
    {
        return whereToGoModuleMapper.updateWhereToGoModule(whereToGoModule);
    }

    /**
     * 删除去哪模块信息
     * 
     * @param id 去哪模块主键
     * @return 结果
     */
    @Override
    @Transactional
    public int deleteWhereToGoModuleById(Long id)
    {
        // 先删除模块下的所有选项
        whereToGoOptionService.deleteWhereToGoOptionByModuleId(id);
        // 再删除模块
        return whereToGoModuleMapper.deleteWhereToGoModuleById(id);
    }

    /**
     * 批量删除去哪模块
     * 
     * @param ids 需要删除的去哪模块主键
     * @return 结果
     */
    @Override
    @Transactional
    public int deleteWhereToGoModuleByIds(Long[] ids)
    {
        for (Long id : ids) {
            // 先删除模块下的所有选项
            whereToGoOptionService.deleteWhereToGoOptionByModuleId(id);
        }
        // 再删除模块
        return whereToGoModuleMapper.deleteWhereToGoModuleByIds(ids);
    }
} 